package org.iamd.service;

import org.iamd.conf.ConfigurationManager;
import org.iamd.domain.business.ApplicationException;
import org.iamd.security.AccessContext;
import org.quartz.StatefulJob;

/**
 * Абстракцията, която всички фонови процеси в приложението наследяват. Всички
 * фонови процеси са синхронни спрямо типа си - инстанциите на един клас се
 * изчакват да приключат.
 * 
 * @author И. Атанасов
 */
public abstract class ABusinessService implements StatefulJob {

	/**
	 * Инициализира администраторски потребителски контекст заради нуждата от
	 * пълен достъп на фоновите процеси до репозиторитата с данни.
	 */
	public ABusinessService() {
		try {
			AccessContext.get().pushUniqueId(ConfigurationManager.getInstance().getAdminID());
		} catch (ApplicationException e) {
			throw new RuntimeException(e);
		}
	}

}